# -*- coding: utf-8 -*-

from PyQt4 import QtCore, QtGui
import sip
sip.setapi('QVariant', 2)
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s
    
aNAME, aVERSION, aAUTHOR, aDOWNLOADS, aDATE = range(5)
iNAME, iVERSION, iLATEST, iAUTHOR, iDOWNLOADS, iNEWVERSION = range(6)

#сортировка для доступных аддонов
class aAddonsSortProxyModel(QtGui.QSortFilterProxyModel):
    def lessThan(self, left, right):
        leftData = self.sourceModel().data(left)
        rightData = self.sourceModel().data(right)
        if self.sortColumn() == aDOWNLOADS:
            return int(leftData) < int(rightData)
        if (self.sortColumn() == aVERSION):
            return int(leftData.replace('r', '')) < int(rightData.replace('r', ''))
        if self.sortColumn() == aDATE:
            lDate = leftData.split('.')
            rDate = rightData.split('.')
            return QtCore.QDate(int(lDate[2]),int(lDate[1]),int(lDate[0])) < QtCore.QDate(int(rDate[2]),int(rDate[1]),int(rDate[0])) 
        else:
            try:
                return leftData.lower() < rightData.lower()
            except:
                return False
              
#сортировка для установленных аддонов            
class iAddonsSortProxyModel(QtGui.QSortFilterProxyModel):
    def lessThan(self, left, right):
        try:
            leftData = self.sourceModel().data(left)
            rightData = self.sourceModel().data(right)
            if self.sortColumn() == iDOWNLOADS:
                return int(leftData) < int(rightData)
            if (self.sortColumn() == iVERSION) or (self.sortColumn() == iLATEST):
                return int(leftData.replace('r', '')) < int(rightData.replace('r', ''))
            else:
                return leftData.lower() < rightData.lower()
        except:
            return False   

class Ui_MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(Ui_MainWindow, self).__init__()
    
    def setupUi(self):
        self.setObjectName(_fromUtf8("MainWindow"))
        self.setWindowIcon(QtGui.QIcon('icons/box_down.png'))
        self.resize(550, 420)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        self.setSizePolicy(sizePolicy)
        self.setMinimumSize(QtCore.QSize(550, 420))
        self.setMaximumSize(QtCore.QSize(550, 420))
        self.centralwidget = QtGui.QWidget(self)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.setCentralWidget(self.centralwidget)
        
        #модель сортировки для списков
        ##для доступных
        self.sortModelAvailable = aAddonsSortProxyModel()
        self.sortModelAvailable.setDynamicSortFilter(True)
        self.sortModelAvailable.setSortCaseSensitivity(False)
        self.modelAvailable = QtGui.QStandardItemModel(0, 5)
        self.modelAvailable.setHorizontalHeaderLabels((self.trUtf8("Название"), self.trUtf8("Версия"), self.trUtf8("Автор"), self.trUtf8("Популярность"), self.trUtf8("Дата")))
        self.sortModelAvailable.setSourceModel(self.modelAvailable)
        
        #для установленных
        self.sortModelInstalled = iAddonsSortProxyModel()
        self.sortModelInstalled.setDynamicSortFilter(True)
        self.sortModelInstalled.setSortCaseSensitivity(False)
        self.modelInstalled = QtGui.QStandardItemModel(0, 6)
        self.modelInstalled.setHorizontalHeaderLabels((self.trUtf8("Название"), self.trUtf8("Версия"), self.trUtf8('Доступно'), self.trUtf8("Автор"), self.trUtf8("Популярность"), self.trUtf8('Есть новая версия')))
        self.sortModelInstalled.setSourceModel(self.modelInstalled)
        
        
        #панели

        ##панель скачки аддонов
        self.groupBoxDownload = QtGui.QGroupBox(self.centralwidget)
        self.groupBoxDownload.setGeometry(QtCore.QRect(2, 0, 485, 200))
        self.groupBoxDownload.setSizePolicy(sizePolicy)
        self.groupBoxDownload.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.groupBoxDownload.setFlat(False)
        self.groupBoxDownload.setCheckable(False)
        self.groupBoxDownload.setObjectName(_fromUtf8("groupBoxDownload"))
        self.groupBoxDownload.setVisible(1)
        
        ###список доступных аддонов
        self.listViewDownload = QtGui.QTreeView(self.groupBoxDownload)
        self.listViewDownload.setGeometry(QtCore.QRect(2, 15, 480, 181))
        self.listViewDownload.setProperty(_fromUtf8("isWrapping"), True)
        self.listViewDownload.setObjectName(_fromUtf8("listViewDownload"))
        self.listViewDownload.setModel(self.sortModelAvailable)
        self.listViewDownload.setSortingEnabled(True)
        self.listViewDownload.setColumnWidth(0, 170)
        self.listViewDownload.setColumnWidth(1, 50)
        self.listViewDownload.setColumnWidth(2, 75)
        self.listViewDownload.setColumnWidth(3, 90)
        self.listViewDownload.setColumnWidth(4, 75)
        self.listViewDownload.setAlternatingRowColors(1)
        self.listViewDownload.setRootIsDecorated(0)

        ##панель установленных аддонов
        self.groupBoxAddons = QtGui.QGroupBox(self.centralwidget)
        self.groupBoxAddons.setGeometry(QtCore.QRect(2, 0, 485, 200))
        self.groupBoxAddons.setSizePolicy(sizePolicy)
        self.groupBoxAddons.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.groupBoxAddons.setFlat(False)
        self.groupBoxAddons.setCheckable(False)
        self.groupBoxAddons.setObjectName(_fromUtf8("groupBoxAddons"))
        self.groupBoxAddons.setVisible(0)
        ###список установленных аддонов
        self.listViewInstalled = QtGui.QTreeView(self.groupBoxAddons)
        self.listViewInstalled.setGeometry(QtCore.QRect(2, 15, 480, 181))
        self.listViewInstalled.setProperty(_fromUtf8("isWrapping"), True)
        self.listViewInstalled.setObjectName(_fromUtf8("listViewInstalled"))
        self.listViewInstalled.setModel(self.sortModelInstalled)
        self.listViewInstalled.setColumnWidth(0, 160)
        self.listViewInstalled.setColumnWidth(1, 50)
        self.listViewInstalled.setColumnWidth(2, 50)
        self.listViewInstalled.setColumnWidth(3, 100)
        self.listViewInstalled.setColumnWidth(4, 100)
        self.listViewInstalled.setColumnHidden(5 , True)
        self.listViewInstalled.setSortingEnabled(1)
        self.listViewInstalled.setAlternatingRowColors(1)
        self.listViewInstalled.setRootIsDecorated(0)
        
        
        ##панель настроек
        self.groupBoxOptions = QtGui.QGroupBox(self.centralwidget)
        self.groupBoxOptions.setGeometry(QtCore.QRect(2, 0, 485, 397))
        self.groupBoxOptions.setSizePolicy(sizePolicy)
        self.groupBoxOptions.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.groupBoxOptions.setFlat(False)
        self.groupBoxOptions.setCheckable(False)
        self.groupBoxOptions.setObjectName(_fromUtf8("groupBoxOptions"))
        self.groupBoxOptions.setVisible(0)
        ###надпись Путь к аллодам
        self.labelAOpath = QtGui.QLabel(self.groupBoxOptions)
        self.labelAOpath.move(4, 20)
        ###поле ввода пути
        self.txtAOpath = QtGui.QLineEdit(self.groupBoxOptions)
        self.txtAOpath.setGeometry(QtCore.QRect(10, 36, 300, 22))
        self.txtAOpath.setReadOnly(True)
        ###кнопка выбора папки
        self.buttonSelectAOpath = QtGui.QPushButton(self.groupBoxOptions)
        self.buttonSelectAOpath.setGeometry(QtCore.QRect(312, 36, 30, 22))
        ###надпись Таймер Обновления
        self.labelUpdateTime = QtGui.QLabel(self.groupBoxOptions)
        self.labelUpdateTime.move(4, 60)
        ###выбор времени обновления
        self.txtUpdateTime = QtGui.QSpinBox(self.groupBoxOptions)
        self.txtUpdateTime.setGeometry(QtCore.QRect(10, 75, 50, 22))
        self.txtUpdateTime.setMaximum(200)
        ###надпись язык
        self.labelLanguage = QtGui.QLabel(self.groupBoxOptions)
        self.labelLanguage.move(4, 98)
        ###комбобокс с выбором языка
        self.comboBoxLanguage = QtGui.QComboBox(self.groupBoxOptions)
        self.comboBoxLanguage.setGeometry(QtCore.QRect(10, 112, 90, 22))
        ###кнопка сохранить
        self.buttonSaveOptions = QtGui.QPushButton(self.groupBoxOptions)
        self.buttonSaveOptions.setGeometry(QtCore.QRect(4, 150, 70, 22))

        ##панель инфо и управления
        self.groupBoxInfo = QtGui.QGroupBox(self.centralwidget)
        self.groupBoxInfo.setGeometry(QtCore.QRect(2, 197, 485, 200))
        self.groupBoxInfo.setSizePolicy(sizePolicy)
        self.groupBoxInfo.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.groupBoxInfo.setFlat(False)
        self.groupBoxInfo.setCheckable(False)
        self.groupBoxInfo.setObjectName(_fromUtf8("groupBoxInfo"))
        self.groupBoxInfo.setVisible(1)
        ###надпись "подробное описание"
        self.labelInfo = QtGui.QLabel(self.groupBoxInfo)
        self.labelInfo.move(4, 0)
        ###текст подробного описания
        self.textInfo = QtGui.QTextEdit(self.groupBoxInfo)
        self.textInfo.setGeometry(QtCore.QRect(2, 15, 334, 50))
        self.textInfo.setEnabled(1)
        self.textInfo.setReadOnly(1)
        ###надпись "лог изменений"
        self.labelChanges = QtGui.QLabel(self.groupBoxInfo)
        self.labelChanges.move(4, 65)
        ###текст изменений
        self.textChanges = QtGui.QTextEdit(self.groupBoxInfo)
        self.textChanges.setGeometry(QtCore.QRect(2, 80, 334, 117))
        self.textChanges.setEnabled(1)
        self.textChanges.setReadOnly(1)
        ###ссылка на обсуждение
        self.buttonLink = QtGui.QPushButton(self.groupBoxInfo)
        self.buttonLink.setGeometry(QtCore.QRect(340, 14, 140, 24))
        ###ссылка на скриншот
        self.buttonScreenshot = QtGui.QPushButton(self.groupBoxInfo)
        self.buttonScreenshot.setGeometry(QtCore.QRect(340, 40, 140, 24))
        ###кнопка загрузки
        self.buttonDownload = QtGui.QPushButton(self.groupBoxInfo)
        self.buttonDownload.setGeometry(QtCore.QRect(340, 66, 140, 24))
        ###кнопка обновить все
        self.buttonUpdateAll = QtGui.QPushButton(self.groupBoxInfo)
        self.buttonUpdateAll.setGeometry(QtCore.QRect(340, 92, 140, 24))
        ###кнопка удаления аддона
        self.buttonDelete = QtGui.QPushButton(self.groupBoxInfo)
        self.buttonDelete.setGeometry(QtCore.QRect(340, 120, 140, 24))
        self.buttonDelete.setEnabled(False)

        
        #действия
        ##открытие панели скачивания аддонов
        self.actionDownload = QtGui.QAction(QtGui.QIcon('icons/box_down.png'), 'Скачать' , self)
        self.actionDownload.setObjectName('actionDownload')
        self.actionDownload.setCheckable(1)
        self.actionDownload.setChecked(1)
        ##открытие панели с установленными аддонами
        self.actionAddons = QtGui.QAction(QtGui.QIcon('icons/box.png'), 'Аддоны' ,self)
        self.actionAddons.setObjectName('actionAddons')
        self.actionAddons.setCheckable(1)
        ##открытие страницы настроек
        self.actionOptions = QtGui.QAction(QtGui.QIcon('icons/cog.png'), 'Опции' ,self)
        self.actionOptions.setObjectName('actionOptions')
        self.actionOptions.setCheckable(1)
        ##обновление базы аддонов
        self.actionRefreshAddonList = QtGui.QAction(self)
        self.actionRefreshAddonList.setObjectName(_fromUtf8("actionRefreshAddonList"))
        ##обновление списка установленных аддонов
        self.actionRefreshInstalledAddonsList = QtGui.QAction(self)
        self.actionRefreshInstalledAddonsList.setObjectName(_fromUtf8("actionRefreshInstalledAddonsList"))
        ##показ главного окна программы
        self.actionOpenMainWindow = QtGui.QAction(self)
        self.actionOpenMainWindow.setObjectName(_fromUtf8("actionOpenMainWindow"))
        ##выход из программы
        self.actionExit = QtGui.QAction(self)
        self.actionExit.setObjectName(_fromUtf8("actionExit"))

        #контекстное меню в трее
        self.contextMenu = QtGui.QMenu()
        self.contextMenu.setObjectName(_fromUtf8("contextMenu"))
        self.contextMenu.addAction(self.actionOpenMainWindow)
        self.contextMenu.addSeparator()
        self.contextMenu.addAction(self.actionExit)

        #главное меню
        self.menubar = QtGui.QMenuBar(self)
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.menu = QtGui.QMenu(self.menubar)
        self.menu.setObjectName(_fromUtf8("menu"))
        self.setMenuBar(self.menubar)
        self.menu.addAction(self.actionRefreshAddonList)
        self.menu.addSeparator()
        self.menu.addAction(self.actionRefreshInstalledAddonsList)
        self.menu.addSeparator()
        self.menu.addAction(self.actionExit)
        self.menubar.addAction(self.menu.menuAction())

        #трей
        self.trayIcon = QtGui.QSystemTrayIcon(self)
        self.trayIcon.setIcon(QtGui.QIcon('icons/box_down.png'))
        self.trayIcon.setObjectName(_fromUtf8("trayIcon"))
        self.trayIcon.setContextMenu(self.contextMenu)

        #панель с кнопками скачать/аддоны/опции
        self.toolBar = QtGui.QToolBar(self)
        self.toolBar.setAutoFillBackground(False)
        self.toolBar.setMovable(False)
        self.toolBar.setIconSize(QtCore.QSize(32, 32))
        self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
        self.toolBar.setFloatable(False)
        self.toolBar.setObjectName(_fromUtf8("toolBar"))
        self.addToolBar(QtCore.Qt.LeftToolBarArea, self.toolBar)
        #действия панели
        self.toolBar.addAction(self.actionDownload)
        self.toolBar.addAction(self.actionAddons)
        self.toolBar.addAction(self.actionOptions)

        self.retranslateUi()

    def retranslateUi(self):
        self.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Менеджер аддонов для Аллодов Онлайн", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBoxDownload.setTitle(QtGui.QApplication.translate("MainWindow", "Доступные аддоны", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBoxAddons.setTitle(QtGui.QApplication.translate("MainWindow", "Установленные аддоны", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBoxOptions.setTitle(QtGui.QApplication.translate("MainWindow", "Настройки", None, QtGui.QApplication.UnicodeUTF8))
        self.menu.setTitle(QtGui.QApplication.translate("MainWindow", "Меню", None, QtGui.QApplication.UnicodeUTF8))
        self.toolBar.setWindowTitle(QtGui.QApplication.translate("MainWindow", "toolBar", None, QtGui.QApplication.UnicodeUTF8))
        self.actionDownload.setText(QtGui.QApplication.translate("MainWindow", "Скачать", None, QtGui.QApplication.UnicodeUTF8))
        self.actionDownload.setToolTip(QtGui.QApplication.translate("MainWindow", "Скачать аддоны", None, QtGui.QApplication.UnicodeUTF8))
        self.actionAddons.setText(QtGui.QApplication.translate("MainWindow", "Аддоны", None, QtGui.QApplication.UnicodeUTF8))
        self.actionAddons.setToolTip(QtGui.QApplication.translate("MainWindow", "Установленные аддоны", None, QtGui.QApplication.UnicodeUTF8))
        self.actionOptions.setText(QtGui.QApplication.translate("MainWindow", "Опции", None, QtGui.QApplication.UnicodeUTF8))
        self.actionOptions.setToolTip(QtGui.QApplication.translate("MainWindow", "Настройки программы", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRefreshAddonList.setText(QtGui.QApplication.translate("MainWindow", "Обновить список доступных аддонов", None, QtGui.QApplication.UnicodeUTF8))
        self.actionRefreshInstalledAddonsList.setText(QtGui.QApplication.translate("MainWindow", "Обновить список установленных аддонов", None, QtGui.QApplication.UnicodeUTF8))
        self.actionOpenMainWindow.setText(QtGui.QApplication.translate("MainWindow", "Открыть", None, QtGui.QApplication.UnicodeUTF8))
        self.actionExit.setText(QtGui.QApplication.translate("MainWindow", "Выход", None, QtGui.QApplication.UnicodeUTF8))
        self.labelInfo.setText(QtGui.QApplication.translate("MainWindow", "Подробное описание:", None, QtGui.QApplication.UnicodeUTF8))
        self.buttonLink.setText(QtGui.QApplication.translate("MainWindow", "Обсуждение на ui9.ru", None, QtGui.QApplication.UnicodeUTF8))
        self.labelChanges.setText(QtGui.QApplication.translate("MainWindow", "Лог изменений:", None, QtGui.QApplication.UnicodeUTF8))
        self.labelAOpath.setText(QtGui.QApplication.translate("MainWindow", "Папка с Аллодами:", None, QtGui.QApplication.UnicodeUTF8))
        self.labelUpdateTime.setText(QtGui.QApplication.translate("MainWindow", "Таймер обновления: (0 - отключить)", None, QtGui.QApplication.UnicodeUTF8))
        self.labelLanguage.setText(QtGui.QApplication.translate("MainWindow", "Язык:", None, QtGui.QApplication.UnicodeUTF8))
        self.buttonScreenshot.setText(QtGui.QApplication.translate("MainWindow", "Скриншот", None, QtGui.QApplication.UnicodeUTF8))
        self.buttonDownload.setText(QtGui.QApplication.translate("MainWindow", "Скачать", None, QtGui.QApplication.UnicodeUTF8))
        self.buttonUpdateAll.setText(QtGui.QApplication.translate("MainWindow", "Обновить всё", None, QtGui.QApplication.UnicodeUTF8))
        self.buttonDelete.setText(QtGui.QApplication.translate("MainWindow", "Удалить", None, QtGui.QApplication.UnicodeUTF8))
        self.buttonSelectAOpath.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8))
        self.buttonSaveOptions.setText(QtGui.QApplication.translate("MainWindow", "Сохранить", None, QtGui.QApplication.UnicodeUTF8))
        self.trayIcon.setToolTip(QtGui.QApplication.translate("MainWindow", "Менеджер аддонов", None, QtGui.QApplication.UnicodeUTF8))
